/*
 * Copyright 2014 Щекотова Ангелина Александровна.
 * Этот файл — часть J4JClientServer Framework
 * J4JClientServer Framework - свободная программа: вы можете перераспространять ее и/или изменять
 * ее на условиях Меньшей Стандартной общественной лицензии GNU в том виде, в каком
 * она была опубликована Фондом свободного программного обеспечения; либо
 * версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
 *
 * J4JClientServer Framework распространяется в надежде, что она будет полезной,
 * но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
 * или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
 * общественной лицензии GNU.
 *
 * Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
 * вместе с этой программой. Если это не так, см.
 * <http://www.gnu.org/licenses/>.
 */

package ru.java4java.ClientServerFramework;

import ru.java4java.ClientServerFramework.impl.Packet;
import ru.java4java.ClientServerFramework.interfaces.SocketHandlerListener;
import ru.java4java.ClientServerFramework.interfaces.ExceptionListener;
import ru.java4java.ClientServerFramework.interfaces.PacketReader;
import ru.java4java.ClientServerFramework.interfaces.PacketWriter;

import java.util.LinkedList;

/**<pre>
 * Этот класс был сделан специально для класса обработчика({@link SocketHandler}).
 * Объект от этого класса содержит настройки обработчика.
 * Его можно указать в качестве настроек для {@link SocketHandler}.
 *
 * Смотрите: {@link SocketHandler#setOptions(SocketHandlerOptions)}
 *           {@link ru.java4java.ClientServerFramework.Server#setClientOptionsClass(Class)}
 * </pre>
 */
public class SocketHandlerOptions {

    private volatile PacketReader packetReader;
    private volatile PacketWriter packetWriter;

    private boolean autoReceive = true;
    private boolean autoSend = true;

    private Packet pingPacket = null;

    private final LinkedList<SocketHandlerListener> socketHandlerListeners = new LinkedList<>();
    private ExceptionListener exceptionListener = null;

    public PacketReader getPacketReader() { return packetReader; }

    public void setPacketReader(PacketReader packetReader) { this.packetReader = packetReader; }

    public PacketWriter getPacketWriter() { return packetWriter; }

    public void setPacketWriter(PacketWriter packetWriter) { this.packetWriter = packetWriter; }

    public boolean isAutoReceive() { return autoReceive; }

    public void setAutoReceive(boolean autoReceive) { this.autoReceive = autoReceive; }

    public boolean isAutoSend() { return autoSend; }

    public void setAutoSend(boolean autoSend) { this.autoSend = autoSend; }

    public Packet getPingPacket() { return pingPacket; }

    public void setPingPacket(Packet pingPacket) { this.pingPacket = pingPacket; }

    public LinkedList<SocketHandlerListener> getSocketHandlerListeners() { return socketHandlerListeners; }

    public ExceptionListener getExceptionListener() { return exceptionListener; }

    public void setExceptionListener(ExceptionListener exceptionListener) { this.exceptionListener = exceptionListener; }

}
